#include "inifile.h"

IniFile::IniFile(){
    //配置文件路径
    mConfigurationFilePath = new QString("ini/config.ini");
    //判断文件是否存在
    bool FileFailure = CheckWhetherFileExists();
    if(FileFailure){
        ReadIniFiles();
    }else {
        WriteIniFiles();
    }

}




/**
 * 判断文件是否存在
 * @brief CheckWhetherFileExists
 * @return
 */
bool IniFile::CheckWhetherFileExists(){
    QFile file(*mConfigurationFilePath);
    bool fileExists = file.exists();
    return fileExists;
}


/**
 * 当前版本号
 * @brief CurrentVersionNumber
 * @return
 */
QString IniFile::CurrentVersionNumber(){
    QSettings rconfig(*mConfigurationFilePath, QSettings::IniFormat);
    QString softwareVersion = rconfig.value("/notice/version").toString();
    return "当前版本V:" + softwareVersion;
}



/**
 * // 写入配置文件
 * @brief WriteIniFiles
 */
void IniFile::WriteIniFiles(){
    // 直接使用QSetting类读写INI文件
    QSettings wconfig(*mConfigurationFilePath, QSettings::IniFormat);

    // 向INI文件写入数据信息setValue()方法
    // 第一节信息
    wconfig.setValue("/database/ip","192.168.12.168");  // 第一个参数，以此类推
    wconfig.setValue("/database/port","3380");
    wconfig.setValue("/database/user","root");
    wconfig.setValue("/database/password","123456");
    wconfig.setValue("fullScreen", false);
    // 第二节信息
    wconfig.setValue("/notice/version","4.8");
    wconfig.setValue("/notice/datetime","2024-07-23 10:14:06");

    // 不需要手动关闭文件，QSettings对象在作用域结束时自动处理
}


/**
 * 读取配置文件
 * @brief IniFile::ReadIniFiles
 */
void IniFile::ReadIniFiles(){
    QSettings rconfig(*mConfigurationFilePath, QSettings::IniFormat);

    // 向INI文件读取数据信息value()方法
    QString strip = rconfig.value("/database/ip").toString();
    QString strport = rconfig.value("/database/port").toString();
    QString struser = rconfig.value("/database/user").toString();
    QString strpassword = rconfig.value("/database/password").toString();

    QString strversion = rconfig.value("/notice/version").toString();
    QString strdatetime = rconfig.value("/notice/datetime").toString();

    // 输出读取配置文件的参数信息
    qDebug() << "读取INI配置文件参数选项如下：";
    qDebug() << "config  IP地址：" << strip.toUtf8().data();  // toUtf8().data()去掉双引号操作
    qDebug() << "config  port端口号：" << strport.toUtf8().data();
    qDebug() << "config  user用户名：" << struser.toUtf8().data();
    qDebug() << "config  password密码：" << strpassword.toUtf8().data();
    qDebug() << "config  version版本号：" << strversion.toUtf8().data();
    qDebug() << "config  datetime时间：" << strdatetime.toUtf8().data();
}




